/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.global.util;

import java.math.BigDecimal;
import java.math.MathContext;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author ctrosch
 */
@ManagedBean (name="conversorMedidasBean")
@SessionScoped
public class ConversorMedidasBean {

    private BigDecimal desde1,desde2,desde3,para1,para2,para3;
    private BigDecimal desdeR; //Resultado desde
    private BigDecimal paraR; //Resultado para

    private String infoCalculo;
    private String resultado;

    public BigDecimal getDesdeR() {
        return desdeR;
    }

    public void setDesdeR(BigDecimal desdeR) {
        this.desdeR = desdeR;
    }

    public BigDecimal getParaR() {
        return paraR;
    }

    public void setParaR(BigDecimal paraR) {
        this.paraR = paraR;
    }

    public BigDecimal getDesde1() {
        return desde1;
    }

    public void setDesde1(BigDecimal desde1) {
        this.desde1 = desde1;
    }

    public BigDecimal getDesde2() {
        return desde2;
    }

    public void setDesde2(BigDecimal desde2) {
        this.desde2 = desde2;
    }

    public BigDecimal getDesde3() {
        return desde3;
    }

    public void setDesde3(BigDecimal desde3) {
        this.desde3 = desde3;
    }

    public String getInfoCalculo() {
        return infoCalculo;
    }

    public void setInfoCalculo(String infoCalculo) {
        this.infoCalculo = infoCalculo;
    }

    public BigDecimal getPara1() {
        return para1;
    }

    public void setPara1(BigDecimal para1) {
        this.para1 = para1;
    }

    public BigDecimal getPara2() {
        return para2;
    }

    public void setPara2(BigDecimal para2) {
        this.para2 = para2;
    }

    public BigDecimal getPara3() {
        return para3;
    }

    public void setPara3(BigDecimal para3) {
        this.para3 = para3;
    }

    public String getResultado() {
        return resultado;
    }

    public void setResultado(String resultado) {
        this.resultado = resultado;
    }   


    /** Creates a new instance of ConversorMedidasBean */
    public ConversorMedidasBean() {

    }

    public void validadMedidas(){
       
        try {
            BigDecimal const1 = new BigDecimal("2");
            BigDecimal const2 = new BigDecimal("25.4");
            BigDecimal const3 = new BigDecimal("100");

            desdeR = desde1.multiply(desde2.divide(const3)).multiply(const1).add(desde3.multiply(const2));
            paraR = para1.multiply(para2.divide(const3)).multiply(const1).add(para3.multiply(const2));

            //Calculo la diferencia de diametro
            BigDecimal dde = desdeR.subtract(paraR);
            //Porcentaje de diferencia
            BigDecimal pdde = BigDecimal.ZERO;

            double porc = 0;
            if (!paraR.equals(BigDecimal.ZERO)) porc = (desdeR.doubleValue()/paraR.doubleValue())*100-100;
            resultado = "";

            pdde = new BigDecimal(porc, new MathContext(2));            

            if ((porc <= 3) && (porc >= -3) && (porc != 0)) {
                JsfUtil.addInfoMessage("∆ Diam Ext.:" + dde + " mm", " " );
                JsfUtil.addInfoMessage("∆ % : " + pdde.toString()  , " " ); //Porcentaje diferencia
                JsfUtil.addInfoMessage("SI, es compatible"         , " ");

            } else {
                JsfUtil.addErrorMessage("∆ Diam Ext.: " + dde + " mm", " " );
                JsfUtil.addErrorMessage("∆ % : "+ pdde.toString()," " ); //Porcentaje diferencia
                JsfUtil.addErrorMessage("NO es compatible", " ");
            }
        } catch (Exception e) {            
            JsfUtil.addErrorMessage("No es posible realizar los cálculos solicitados");            
        }
    }

    public void borrarValores(){
        desde1 = null;
        desde2 = null;
        desde3 = null;
        desdeR = null;
        para1 = null;
        para2 = null;
        para3 = null;
        paraR = null;

        infoCalculo = null;
        resultado = null;
    }
}
